package br.edu.delta.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

import br.edu.delta.enuns.EnumEstados;

/**
 * <p>
 * <b>Title:</b> Endereco
 * </p>
 * 
 * <p>
 * <b>Description:</b> Endereco
 * </p>
 * 
 * <p>
 * <b>Company: </b>
 * </p>
 * 
 * @author Denis
 * 
 * @version 1.0.0
 */
@Entity
@Table(name = "tbl_enderecos")
@SequenceGenerator(name = EntidadeImpl.SEQUENCE_GENERATOR, sequenceName = "seq_tbl_enderecos", allocationSize = 1, initialValue = 1)
public class Endereco extends EntidadeImpl {

	/** Atributo serialVersionUID. */
	private static final long serialVersionUID = 5886040720398125676L;

	/** Atributo logradouro. */
	@NotEmpty
	@Size(max = 60)
	@Column(nullable = false)
	private String logradouro;

	/** Atributo numero. */
	@NotEmpty
	@Size(max = 6)
	@Column(nullable = false)
	private String numero;

	/** Atributo complemento. */
	@NotEmpty
	@Size(max = 30)
	@Column(nullable = false)
	private String complemento;

	/** Atributo bairro. */
	@NotEmpty
	@Size(max = 60)
	@Column(nullable = false)
	private String bairro;

	/** Atributo cep. */
	@NotEmpty
	@Size(max = 10)
	@Column(nullable = false)
	private String cep;

	/** Atributo cidade. */
	@NotEmpty
	@Size(max = 60)
	@Column(nullable = false)
	private String cidade;

	/** Atributo estado. */
	@NotNull
	@Column(insertable = true, length = 2, unique = false, updatable = true, nullable = false, name = "ESTADO")
	@Enumerated(EnumType.STRING)
	private EnumEstados estado;

	/**
	 * Retorna o valor do atributo <code>logradouro</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getLogradouro() {

		return logradouro;
	}

	/**
	 * Define o valor do atributo <code>logradouro</code>.
	 * 
	 * @param logradouro
	 */
	public void setLogradouro(String logradouro) {

		this.logradouro = logradouro;
	}

	/**
	 * Retorna o valor do atributo <code>numero</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getNumero() {

		return numero;
	}

	/**
	 * Define o valor do atributo <code>numero</code>.
	 * 
	 * @param numero
	 */
	public void setNumero(String numero) {

		this.numero = numero;
	}

	/**
	 * Retorna o valor do atributo <code>complemento</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getComplemento() {

		return complemento;
	}

	/**
	 * Define o valor do atributo <code>complemento</code>.
	 * 
	 * @param complemento
	 */
	public void setComplemento(String complemento) {

		this.complemento = complemento;
	}

	/**
	 * Retorna o valor do atributo <code>bairro</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getBairro() {

		return bairro;
	}

	/**
	 * Define o valor do atributo <code>bairro</code>.
	 * 
	 * @param bairro
	 */
	public void setBairro(String bairro) {

		this.bairro = bairro;
	}

	/**
	 * Retorna o valor do atributo <code>cep</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getCep() {

		return cep;
	}

	/**
	 * Define o valor do atributo <code>cep</code>.
	 * 
	 * @param cep
	 */
	public void setCep(String cep) {

		this.cep = cep;
	}

	/**
	 * Retorna o valor do atributo <code>cidade</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getCidade() {

		return cidade;
	}

	/**
	 * Define o valor do atributo <code>cidade</code>.
	 * 
	 * @param cidade
	 */
	public void setCidade(String cidade) {

		this.cidade = cidade;
	}

	/**
	 * Retorna o valor do atributo <code>estado</code>
	 * 
	 * @return <code>EnumEstados</code>
	 */
	public EnumEstados getEstado() {

		return estado;
	}

	/**
	 * Define o valor do atributo <code>estado</code>.
	 * 
	 * @param estado
	 */
	public void setEstado(EnumEstados estado) {

		this.estado = estado;
	}

}
